﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;

namespace FinanSoft.Entities
{
    [DataContract]
    public class StoreRoom
    {
        #region Properties
        /// <summary>
        /// Numero que identifica de manera unica al almacen
        /// </summary>
        /// 
        [DataMember]
        public int Id
        {
            get;
            set;
        }

        /// <summary>
        /// Nombre del almacen
        /// </summary>
        [DataMember]
        public string Name
        {
            get;
            set;
        }

        /// <summary>
        /// Codigo del almacen
        /// </summary>
        [DataMember]
        public string Code
        {
            get;
            set;
        }

        /// <summary>
        /// Cuenta de Ventas por defecto 
        /// </summary>
        [DataMember]
        public Account SalesAccount
        {
            get;
            set;
        }

        /// <summary>
        /// Cuenta de Costo de Ventas por defecto 
        /// </summary>
        [DataMember]
        public Account SalesCostAccount
        {
            get;
            set;
        }

        /// <summary>
        /// Cuenta de Inventario por defecto 
        /// </summary>
        [DataMember]
        public Account InventoryAccount
        {
            get;
            set;
        }

        /// <summary>
        /// Cuenta de compras por defecto 
        /// </summary>
        [DataMember]
        public Account PurchasesAccount
        {
            get;
            set;
        }

        #endregion

        #region Constructors
        /// <summary>
        /// Constructor por defecto de la clase
        /// </summary>
        public StoreRoom()
        {
            
        }

        /// <summary>
        /// Constructor de la clase. Recibe parametros para todos los atributos del almacen
        /// </summary>
        /// <param name="id"> Entero que identifica de manera unica el almacen</param>
        /// <param name="code"> String con el codigo asignado al almacen por el usuario</param>
        /// <param name="name"> String con el nombre asignado al almacen por el usuario</param>
        /// <param name="sales">Cuenta por defecto en la que se registraran los movimientos de venta de mercancias</param>
        /// <param name="purchases">Cuenta por defecto en la que se registraran los movimientos de compras de mercancia</param>
        /// <param name="inventory">Cuenta por defecto en la que se registraran los movimientos en el inventario de la bodega</param>
        /// <param name="salesCost">Cuenta por defecto en la que se registraran </param>
        public StoreRoom(int id, string code, string name, Account sales, Account purchases, Account inventory, Account salesCost)
        {
            Id = id;
            Name = name;
            Code = code;
            SalesAccount = sales;
            InventoryAccount = inventory;
            PurchasesAccount = purchases;
            SalesCostAccount = salesCost;
        }
        #endregion        
    }
}
